Fix MA0182 to handle COM interop types with CoClass attribute#959
Merged
Conversation
…ass relationships Co-authored-by: meziantou <509220+meziantou@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Fix MA0184 to handle COM objects
Fix MA0182 to handle COM interop types
Jan 10, 2026
meziantou
reviewed
Jan 10, 2026
Comment on lines
+83
to
+85
| // Exclude COM types (types marked with ComImportAttribute) | ||
| if (symbol.HasAttribute(ComImportAttributeSymbol)) | ||
| return; |
Owner
There was a problem hiding this comment.
@copilot I'm not sure why [ComImport] types should be excluded?
Contributor
Author
There was a problem hiding this comment.
You're right - there's no need to exclude all [ComImport] types. The CoClass tracking is sufficient. I've removed the blanket exclusion and updated the logic to mark both the interface and its CoClass implementation as used when the CoClass attribute is present. This correctly handles the COM interop pair. (commit a5309ff)
…s used Co-authored-by: meziantou <509220+meziantou@users.noreply.github.com>
Contributor
Author
|
Just as a heads up, I was blocked by some firewall rules while working on your feedback. Expand below for details. Warning Firewall rules blocked me from connecting to one or more addresses (expand for details)I tried to connect to the following addresses, but was blocked by firewall rules:
If you need me to access, download, or install something from one of these locations, you can either:
|
Copilot
AI
changed the title
Fix MA0182 to handle COM interop types
Fix MA0182 to handle COM interop types with CoClass attribute
Jan 10, 2026
meziantou
reviewed
Jan 10, 2026
This was referenced Jan 10, 2026
This was referenced May 1, 2026
Merged
Closed
Open
Closed
Merged
Closed
Closed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
MA0182 incorrectly reports internal COM interop types as unused when they use the
[CoClass]attribute for runtime binding, making their relationship invisible to static analysis.Changes
[CoClass]relationships: When an interface has[CoClass(typeof(T))], mark both the interface andTas used since they form a COM interop pairThe analyzer now properly understands COM interop patterns where an interface and its CoClass implementation work together as a unit, even when there are no explicit references to them in code.
Original prompt
<issue_description>````c#
[ComImport]
[Guid(IIDGuid.IFileSaveDialog)]
[CoClass(typeof(FileSaveDialogRCW))]
[SuppressMessage("Style", "IDE1006:Naming Styles", Justification = "Used as a class")]
internal interface NativeFileSaveDialog : IFileSaveDialog // This class should not be reported because of CoClass. There is a usage through FileSaveDialogRCW
{
}
[ComImport]
[ClassInterface(ClassInterfaceType.None)]
[Guid(CLSIDGuid.FileSaveDialog)]
internal sealed class FileSaveDialogRCW
{
}
Original prompt
💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.